\chapter{Závěr}
\label{chap:resume}

V rámci této práce jste připravili návrh obecného API pro ovládání robotů v~přirozeném jazyce a jeho ukázkovou
implementaci pomocí programovacích jazyků Java a Prolog a robotického králíka \nab. Toto API specifikuje komunikaci mezi
robotem a serverem, mezi uživatelem a serverem a umožňuje zpracování přirozeného jazyka, zpracování získané informace (např. generování
hlasu) a napojení robota na externí služby. Byla implementována oboustranná oboustranná komunikace mezi agentem
(robotickým králíkem \nab) a ovladačem (komunikačním serverem \lstinline!volk!). Implementovali jsme komunikační
protokoly, příjem zvukových záznamů na serveru, posílání robotovi příkazů (pohyb, světelné efekty, digitální audio).
Komunikaci s uživatelem v přirozeném jazyce zajišťují: automatické vytváření zvukových záznamů na základě textových
zpráv, generování textových zpráv v přirozeném jazyce na základě vzorců, jednoduchý interpret příkazů pro robota \nab{}
v přirozeném jazyce (zatím pouze čeština) a komponenta, která umožňuje rozpoznat jazyk textu v přirozeném jazyce.
Ukázková implementace obsahuje i příklad napojení robota na služby třetích stran (čtečka RSS zdrojů). 
 
Ovladač \lstinline!volk!, který jsme vytvořili, umožňuje komunikovat s robotem čistě v rámci lokální \wifi{} sítě, není
přitom vyžadováno připojení k Internetu\footnote{Některé služby, např. čtení RSS zpráv, můžou vyžadovat aktivní
internetové připojení.}. Díky tomu je aplikace úplně nezávislá na externích serverech. Navíc se oproti oficiálnímu
serveru výrazně zmenšila doba odezvy králíka, která se teď odvíjí pouze od frekvence odesí\-lání dotazů ping králíkem
(viz popis konfigurace ovladače v příloze \ref{chap:app:config} na stránce \pageref{chap:app:config}) a 
času nutného pro zpracování příkazu.\footnote{Výrazné zlepšení nastává ve srovnání s oficiálním HTTP serverem.
Proti komunikaci s novější verzí oficiálního serveru, která používala protokol XMPP, není zrychlení tak velké,
ale přesto zřetelné (viz kapitola \ref{chap:nabaztag}).}

Zpřístupnuli jsme předpřipravenou konfiguraci serveru (viz kapitola \ref{app:config}). Ta umožňuje mj.:
\begin{itemize}
  \item ovládání robota pomocí jednoduchých textových příkazů,
  \item generování mluvené řeči v českém jazyce,
  \item stahování a čtení RSS zpráv.
\end{itemize}

Nejaktuálnější verze zdrojových kódů jsou dostupné ke stažení na stránce \url{http://code.google.com/p/volk/}. Lze je
stáhnout i z SVN repozitáře pomocí následujícího příkazu (anonymní přístup jenom pro čtení):
\begin{lstlisting}[breaklines=true, breakatwhitespace=true]
svn checkout http://volk.googlecode.com/svn/trunk/ volk-read-only
\end{lstlisting}

\section{Další možnosti vývoje}

Níže stručně popisujeme další možné směry vývoje samotného API, jeho implementace pro robotického králíka \nab{} i
jednotlivých zásuvných modulů.

\begin{itemize}
  \item Zajištění kompatibility ovladače s jinými verzemi králíka (starší
  Nabaztag, novější Karotz) -- a přitom zohlednit omezení starší generace (např. možnost přehrávat maximálně $45$~s
  zvuku), popř. i zajistit podporu novinek v~robotovi Karotz (vnitřní úložiště, USB port, webová kamera), což ale může
  vyžadovat nahrazení HTTP serveru XMPP serverem. 
  \item Sjednocení použitého enginu Prologu pro všechny komponenty, které
  vy\-ža\-du\-jí Prolog. Jednalo by se pravděpodobně o použití SWI Prologu.
  TuProlog podle všeho nebude v dohlédné době natolik pokročilý, aby mohl	
  nahradit SWI.
  \item Vývoj pluginů pro automatické rozpoznávání mluvené řeči a hlasové ovládání; stávající verze umožňuje napojení
  takových pluginů, konkrétní pluginy nicméně nejsou zatím implementovány.
  \item Implementace pokročilejších pluginů pro porozumění textům v přiro\-ze\-ném  jazyce.
  \item Integrace parsovacích systémů (TectoMT, MaltParser, MST, Collins).
  \item Vývoj pluginů pro porozumění textům v dalších jazycích.
  \item Analýza vhodnosti serveru nedávno uvolněného výrobcem pro domácí používání.
  \item Další vývoj základních datových typů, které reprezentují sdělení v přirozeném jazyce.
  \item Použití aspektově orientovaného programování pro rozšíření logování.
  \item Použití standardního nástroje pro sestavování aplikací (např. Apache Ant\footnote{\url{http://ant.apache.org/}}
  nebo Apache Maven\footnote{\url{http://maven.apache.org}}).
\end{itemize}